home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / proxy_gopher.nasl < prev    next >
Text File  |  2005-01-14  |  2KB  |  92 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. #
  5. # See the Nessus Scripts License for details
  6. #
  7. #
  8. # This script does not check for CAN-2002-0371 per se,
  9. # but references it as an example of an abuse in the gopher
  10. # protocol. MS advisory MS02-027 also suggests disabling
  11. # the gopher protocol handling completely.
  12. #
  13.  
  14. if(description)
  15.  script_id(11305);
  16.  script_bugtraq_id(4930);
  17.  script_cve_id("CAN-2002-0371");
  18.  script_version ("$Revision: 1.4 $");
  19.  
  20.  name["english"] = "Proxy accepts gopher:// requests";
  21.  
  22.  script_name(english:name["english"]);
  23.  
  24.  desc["english"] = "
  25. The proxy accepts gopher:// requests. 
  26.  
  27. Gopher is an old network protocol which predates HTTP and
  28. is nearly unused today. As a result, gopher-compatible
  29. software is generally less audited and more likely to contain
  30. security bugs than others.
  31.  
  32. By making gopher requests, an attacker may evade your firewall
  33. settings, by making connections to port 70, or may even exploit
  34. arcane flaws in this protocol to gain more privileges on this
  35. host (see the attached CVE id for such an example).
  36.  
  37. Solution : reconfigure your proxy so that it refuses gopher requests.
  38. Risk factor : Medium";
  39.  
  40.  
  41.  script_description(english:desc["english"]);
  42.  
  43.  summary["english"] = "Determines if we can use the remote web proxy to do gopher requests"; 
  44.  
  45.  script_summary(english:summary["english"]);
  46.  
  47.  script_category(ACT_GATHER_INFO);
  48.  
  49.  script_copyright(english:"This script is Copyright (C) 2003 Renaud Deraison");
  50.  
  51.  family["english"] = "Firewalls"; 
  52.  family["francais"] = "Firewalls";
  53.  
  54.  script_family(english:family["english"],
  55.             francais:family["francais"]);
  56.  script_dependencie("find_service.nes", "proxy_use.nasl");
  57.  script_require_keys("Proxy/usage");
  58.  script_require_ports("Services/http_proxy", 3128, 8080);
  59.  exit(0);
  60. }
  61.  
  62. #
  63. # The script code starts here
  64. #
  65.  
  66. include("misc_func.inc");
  67.  
  68. ports = add_port_in_list(list:get_kb_list("Services/http_proxy"), port:3128);
  69. ports = add_port_in_list(list:ports, port:8080);
  70.  
  71.  
  72. proxy_use = get_kb_item("Proxy/usage");
  73. if(proxy_use)
  74. {
  75.  foreach port (ports)
  76.  {
  77.   soc = open_sock_tcp(port);
  78.   if(soc)
  79.   {
  80.   command = string("GET gopher://", get_host_name(),":1234 HTTP/1.0\r\n\r\n");
  81.   send(socket:soc, data:command);
  82.   buffer = recv_line(socket:soc, length:4096);
  83.   if((" 200 " >< buffer)||(" 503 "><buffer)||("502 " >< buffer)){ 
  84.       security_warning(port);
  85.     exit (0);
  86.     }
  87.   close(soc);
  88.   }
  89.  }
  90. }
  91.